home *** CD-ROM | disk | FTP | other *** search
/ MacFormat España 19 / macformat_19.iso / Shareware / Developers / N Game Library1.1.0E(ppc) / Snow Demo(PPC) / Snow Demo(PPC).c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-23  |  5.8 KB  |  260 lines  |  [TEXT/CWIE]

  1. /*============================================================
  2.  
  3.                     Snow  demo program
  4.                     
  5. ============================================================*/
  6.  
  7. #include        "N_Library.h"
  8.  
  9. void            Main_Process(void);
  10. void            Key_Process(void);
  11. WindowPtr     CreateWindow(Str255 name);
  12.  
  13. #define        WindowSizeX        640
  14. #define        WindowSizeY        480
  15.  
  16. short            NewWindowX;
  17. short            NewWindowY;
  18. short            Data_Rsrc = 0;
  19. long                routine_step = 0;
  20. long                wait;
  21. short            S1_X[1024];
  22. short            S1_Y[1024];
  23. unsigned short        S1_D[1024];
  24. short            r = 0,rs=0;
  25. short            lx=640;
  26. short            speed  = -3;
  27. Boolean            q = false;
  28. Boolean            kb=false;
  29. EventRecord        theEvent;
  30. short            Snd_List0[]     = {1000,1001,1002,0};
  31. short            Music1[]         = { 1002,-1 };
  32.  
  33. void main(void)
  34. {
  35.     WindowPtr    window;
  36.     short         i;
  37.  
  38.     ToolboxInit();
  39.     ColorCheck();
  40.     HideMenuBar();
  41.     window = CreateWindow("\pPUSH 'Q' TO QUIT");
  42.     N_Window_Set(window,NewWindowX,NewWindowY,WindowSizeX,WindowSizeY);
  43.     N_Sp_Make(640,480);
  44.     N_Cel_Make(150000);
  45.     Open_Resource_File(128,1,&Data_Rsrc);
  46. //    Set Kanban Sprites <Sprites & Cel> (Sprite 256)
  47.     N_Sprite_Set(130,50,12,16,1,13,4,0);                        //Set font sprites (Sp50-)
  48.     Through_Col = 0xff;    
  49.     N_Sprite_Set(200,256,216,88,0,1,1,0);                        //wood panel (Sp 256)
  50. //    Set Snow Sprites (Sprite 30-46)
  51.     N_Sprite_Set(404,30,32,32,0,1,1,2);                        //snow (2=zoom out mode,16lev) (Sp 30-46)
  52.     N_Sprite_Set(419,46,8,8,0,1,1,0);
  53.     Through_Col = 0x00;
  54.     N_Sprite_Set(132,100,25,26,1,6,1,0);                        //button(Sp 100-105)
  55.     N_Sprite_Set(133,110,208,120,0,1,1,0);                    //control panel(Sp 110)
  56.     N_Font_Set(0,0x80000000+50,0,0x80000000+76,0x80000000+87);        //Font Set 0 
  57.     N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);                    //draw background on SP_Off
  58.     N_Sound_Load(&Snd_List0[0]);                                //set sounds
  59.     N_Music_Set(1,&Music1[0]);                                //set Music 1
  60.     N_Music_Play(1);                                        //play Music 1
  61.  
  62. //    Button Set-up
  63.     N_Button_Set(0,0,1,10,404,512,0x80000000+100,0x80000000+101,1000,1001);    //Q Button
  64.     N_Button_Set(0,1,1,40,404,512,0x80000000+102,0x80000000+103,1000,1001);    //C Button
  65.     N_Button_Set(0,2,1,130,364,40,0x80000000+104,0x80000000+105,1000,1001);    //up Button
  66.     N_Button_Set(0,3,1,130,442,40,0x80000000+104,0x80000000+105,1000,1001);    //down Button
  67.     N_Button_Set(0,4,1,93,404,40,0x80000000+104,0x80000000+105,1000,1001);    //left Button
  68.     N_Button_Set(0,5,1,167,404,40,0x80000000+104,0x80000000+105,1000,1001);    //right Button
  69.  
  70.     Close_Resource_File(&Data_Rsrc);
  71.  
  72.     routine_step = 0;
  73.     for (i = 0;i!=1024;i++)
  74.     {
  75.         N_Cel_Kill(i);                                        //kill plane info
  76.         S1_X[i] = GetRandom(0,640*32)-640*16;                //make random points
  77.         S1_Y[i] = GetRandom(0,480*32)-480*16;
  78.         S1_D[i] = GetRandom(1,255);
  79.     }
  80.  
  81.     N_Pict_Effect (131,0,0,3,0,0);
  82.     for (i=0;i!=32;i++)
  83.     {
  84.         Delay(1,&wait);
  85.         N_Pict_Effect (131,0,0,3,1,0);
  86.         N_Pict_Effect (131,0,0,3,1,0);
  87.         N_Pict_Effect (131,0,0,3,1,0);
  88.         N_Pict_Effect (131,0,0,3,1,0);
  89.         N_Pict_Effect (131,0,0,3,1,0);
  90.         N_Pict_Effect (131,0,0,3,1,0);
  91.         N_Pict_Effect (131,0,0,3,1,0);
  92.         N_Pict_Effect (131,0,0,3,1,0);
  93.     }
  94.     N_Button_Put(0);
  95.  
  96.     do
  97.     {
  98.         N_Music_Loop();
  99.         Main_Process();
  100.     }
  101.     while (q==false);
  102.     N_Music_Out(90);                                        //fade out
  103.     do
  104.     {
  105.         N_Music_Loop();
  106.     }
  107.     while (FO_Flag == true);
  108.     ShowMenuBar();
  109.     N_Sound_Close();                                        //close sound channels
  110.     ColorRevert();
  111.  
  112. }
  113.  
  114. void Main_Process(void)
  115. {
  116.     short            i,x,y,ii,p = 0,dist,bt;
  117.     long                wrk;
  118.     long                xx,yy;
  119.     char                key;
  120.     Boolean            emp;
  121.     Point                mp;
  122.  
  123.     N_Cel_Put(950,0x80000000+110,4,356);                    //panel
  124.     
  125.     Key_Process();
  126.     routine_step++;
  127.     N_Font_Put("\pTHANK YOU FOR DOWNLOADING/",lx,10,14,0,1,800);
  128.     lx-=3;
  129.     if (lx <= -600) lx=640;
  130.     
  131.     if (routine_step<64)                                        //move & put a wood panel
  132.     {
  133.         N_Cel_Put(899,0x80000000+256,212,(short)(routine_step*4-92));
  134.     }
  135.     if (routine_step>=64 && routine_step<192)
  136.     {
  137.         N_Cel_Put(899,0x80000000+256,212,164);
  138.     }        
  139.     if (routine_step>=192 && routine_step <300)
  140.     {
  141.         N_Cel_Put(899,0x80000000+256,212,(short)164+((routine_step-192)*5));
  142.     }
  143.  
  144.     if (routine_step < 700) ii = routine_step;                        //max 700 snows
  145.         else    ii = 700;
  146.  
  147.     for (i = 0;i!=ii;i++)
  148.     {
  149.         x = S1_X[i];
  150.         y = S1_Y[i];
  151.  
  152.         wrk = S1_D[i];
  153.         wrk = wrk / 16;
  154.         wrk = 16-wrk;
  155.  
  156.         if (wrk>14) wrk = 15;
  157.  
  158.         N_Cel_3D_Put(i,0x80000000+30+wrk,x,y,320,240,r,S1_D[i]);        //put a snow
  159.         dist = S1_D[i] + speed;
  160.         if (dist <  0)
  161.         {
  162.             dist = 512+dist;
  163.             N_Cel_Get(i,&emp,&xx,&x,&y);
  164.             N_Sp_Put(0x80000000+46,x-4,y-4);
  165.  
  166.             S1_X[i] = GetRandom(0,640*32)-640*16;
  167.             S1_Y[i] = GetRandom(0,480*32)-480*16;
  168.         }            
  169.  
  170.         if (dist > 255)    
  171.         {
  172.             dist = dist -256;            
  173.  
  174.             S1_X[i] = GetRandom(0,640*32)-640*16;
  175.             S1_Y[i] = GetRandom(0,480*32)-480*16;
  176.         }            
  177.  
  178.  
  179.         S1_D[i] = dist;
  180.     }
  181.     r=r+rs;
  182.     N_Cel_Loop(0,0);
  183.  
  184.     bt=N_Button_Check(0);
  185.  
  186.     if (bt==0) q=true;
  187.     if (bt==1) N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);                //re-draw background
  188.     if (bt==2)    speed--;
  189.     if (bt==3)    speed++;
  190.     if (bt==4)    rs++;
  191.     if (bt==5)    rs--;
  192. }
  193.  
  194. void Key_Process(void)
  195. {
  196.     char        ky;
  197.     
  198.     ky = N_Key_Get();
  199.     if (kb == false)
  200.     {
  201.         if ((ky & 0x01) !=0)
  202.         {
  203.             speed++;
  204.             N_Button_Push(0,3);
  205.             kb = true;
  206.         }    
  207.         if ((ky & 0x02) !=0)
  208.         {
  209.             rs++;
  210.             N_Button_Push(0,4);
  211.             kb = true;
  212.         }
  213.         if ((ky & 0x04) !=0)
  214.         {
  215.             rs--;
  216.             N_Button_Push(0,5);
  217.             kb = true;
  218.         }
  219.         if ((ky & 0x08) !=0)
  220.         {
  221.             speed--;
  222.             N_Button_Push(0,2);
  223.             kb = true;
  224.         }
  225.  
  226.         if ((ky & 0x40) !=0)
  227.         {
  228.             N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);            //re-draw background
  229.             N_Button_Push(0,1);
  230.             kb = true;
  231.         }
  232.     }
  233.     if ((ky & 0x80) !=0)
  234.     {
  235.         N_Button_Push(0,0);
  236.          q = true;
  237.     }
  238.     if (ky==0) kb = 0;
  239. }
  240.  
  241. WindowPtr CreateWindow (Str255 name)
  242. {
  243.     WindowPtr    window;
  244.     short        centerX,centerY;
  245.     short        windowWidth,windowHeight;
  246.  
  247.     window = GetNewWindow (128,nil,(WindowPtr)-1L );
  248.     centerX  = (qd.screenBits.bounds.right -qd.screenBits.bounds.left)/2;
  249.     centerY  = (qd.screenBits.bounds.bottom -qd.screenBits.bounds.top)/2;
  250.     SetWTitle(window,name);
  251.     MoveWindow(window,NewWindowX=centerX-(WindowSizeX/2),NewWindowY=centerY-(WindowSizeY/2),false);
  252.     SizeWindow(window,WindowSizeX,WindowSizeY,TRUE);
  253.  
  254.     ShowWindow(window);
  255.     SetPort((GrafPtr)window );
  256.     return (WindowPtr)window;
  257. }
  258.     
  259.  
  260.